System.Collections.Generic.HashSet<T> 類別
本文提供此 API 參考文件的補充備註。
類別 HashSet<T> 提供高效能集合作業。 集合是一個集合,其中包含沒有重複的專案,且其項目沒有特定順序。
物件的容量 HashSet<T> 是物件可以保存的項目數目。 當 HashSet<T> 專案加入至 物件時,物件的容量會自動增加。
類別HashSet<T>是以數學集合的模型為基礎,並提供類似於存取 或 Hashtable 集合索引鍵的Dictionary<TKey,TValue>高效能集合作業。 簡單來說,類別 HashSet<T> 可以視為 Dictionary<TKey,TValue> 不含值的集合。
HashSet<T>集合未排序,而且不能包含重複的專案。 如果順序或元素重複比應用程式的效能更重要,請考慮搭配 Sort 方法使用 List<T> 類別。
HashSet<T> 提供許多數學集合運算,例如集合加法(等位)和集合減法。 下表列出提供的 HashSet<T> 作業及其數學對等專案。
HashSet 作業 | 數學對等專案 |
---|---|
UnionWith | 聯集或設定加法 |
IntersectWith | 交叉口 |
ExceptWith | 設定減法 |
SymmetricExceptWith | 對稱差異 |
除了列出的集合作業之外,類別 HashSet<T> 也會提供方法來判斷集合是否相等、集合重疊,以及集合是否為另一組的子集或超集。
僅限 .NET Framework:對於非常大HashSet<T>的物件,您可以將組態元素的 <gcAllowVeryLargeObjects>
屬性設定enabled
為true
在運行時間環境中,將 64 位系統上的最大容量增加到 20 億個元素。
HashSet<T> 類別會實作 ISet<T> 介面。
HashSet 和 LINQ set 作業
LINQ 提供對實作 或 IQueryable 介面之任何數據源IEnumerable的 Distinct
、Union
、 Intersect
和 Except
設定作業的存取權。 HashSet<T> 提供較大型且更健全的集合集合作業。 例如,HashSet<T>提供和 IsSupersetOf等IsSubsetOf比較。
LINQ set 作業和 HashSet<T> 作業之間的主要差異在於 LINQ set 作業一律會傳回新的 IEnumerable<T> 集合,而 HashSet<T> 對等方法則修改目前的集合。
一般而言,如果您必須建立新的集合,或者如果您的應用程式只需要存取提供的集合作業,則在任何 IEnumerable<T> 集合或陣列上使用LINQ set作業就已足夠。 不過,如果您的應用程式需要存取其他集合作業,或不需要建立新的集合,請使用 類別 HashSet<T> 。
下表顯示 HashSet<T> 作業及其相等的LINQ集合作業。
HashSet 作業 | LINQ 對等專案 |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
未提供。 | Distinct |
SymmetricExceptWith | 未提供。 |
Overlaps | 未提供。 |
IsSubsetOf | 未提供。 |
IsProperSubsetOf | 未提供。 |
IsSupersetOf | 未提供。 |
IsProperSupersetOf | 未提供。 |
SetEquals | 未提供。 |